{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ec469d7d",
   "metadata": {},
   "source": [
    "Excel表格“pydata03”收集了某城市的天气数据，基于“pydata03.xlsx”数据集回答以下问题，数据导入后命名为pydata03。以下每道题均是在原始数据基础上进行的，题干所涉及到的数据修改操作不继承到其他题中。pydata03.xlsx"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5c2f7483",
   "metadata": {},
   "source": [
    "#### 101、请通过max()函数分析pydata03.xlsx，说出显示的”气象站气压”列中的最大值是 (A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "dfc88bb6",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2e525f8c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>大气温度</th>\n",
       "      <th>气象站气压</th>\n",
       "      <th>相对湿度</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2023-02-22 14:00:00</td>\n",
       "      <td>4</td>\n",
       "      <td>757.2</td>\n",
       "      <td>87</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2023-02-22 13:00:00</td>\n",
       "      <td>4</td>\n",
       "      <td>757.9</td>\n",
       "      <td>87</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2023-02-22 12:00:00</td>\n",
       "      <td>3</td>\n",
       "      <td>758.7</td>\n",
       "      <td>93</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2023-02-22 11:00:00</td>\n",
       "      <td>3</td>\n",
       "      <td>759.9</td>\n",
       "      <td>87</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2023-02-22 10:00:00</td>\n",
       "      <td>3</td>\n",
       "      <td>759.9</td>\n",
       "      <td>87</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   日期  大气温度  气象站气压  相对湿度  类别\n",
       "0 2023-02-22 14:00:00     4  757.2    87   1\n",
       "1 2023-02-22 13:00:00     4  757.9    87   2\n",
       "2 2023-02-22 12:00:00     3  758.7    93   3\n",
       "3 2023-02-22 11:00:00     3  759.9    87   1\n",
       "4 2023-02-22 10:00:00     3  759.9    87   3"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_excel(\"pydata03_1678066065189.xlsx\")\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "582c2685",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "764.6"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['气象站气压'].max()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bef00aa3",
   "metadata": {},
   "source": [
    "#### 102、若数据集pydata03为txt文件，可以用以下哪个函数读取 (C)\n",
    "这道题选A或选C都可以，txt文件用read_csv读取，也可以用read_table读取"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7bfad035",
   "metadata": {},
   "source": [
    "#### 103、在pydata03.xlsx文件中的“相对湿度’列中设置了一个小于11的异常值，请问它在哪一行 (B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c964dcb1",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>大气温度</th>\n",
       "      <th>气象站气压</th>\n",
       "      <th>相对湿度</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>502</th>\n",
       "      <td>2023-02-01 16:00:00</td>\n",
       "      <td>5</td>\n",
       "      <td>758.0</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     日期  大气温度  气象站气压  相对湿度  类别\n",
       "502 2023-02-01 16:00:00     5  758.0     9   1"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "condition = df['相对湿度'] < 11\n",
    "df[condition]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3c5aade5",
   "metadata": {},
   "source": [
    "#### 104、pydata03中所有类别为2的样本中大气温度的1/4分位数为 (B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "021d488b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>大气温度</th>\n",
       "      <th>气象站气压</th>\n",
       "      <th>相对湿度</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>167.000000</td>\n",
       "      <td>167.000000</td>\n",
       "      <td>167.000000</td>\n",
       "      <td>167.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>4.598802</td>\n",
       "      <td>755.897006</td>\n",
       "      <td>61.419162</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>4.174016</td>\n",
       "      <td>3.727405</td>\n",
       "      <td>24.798059</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-3.000000</td>\n",
       "      <td>749.300000</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>752.750000</td>\n",
       "      <td>42.000000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>4.000000</td>\n",
       "      <td>755.500000</td>\n",
       "      <td>61.000000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.500000</td>\n",
       "      <td>759.600000</td>\n",
       "      <td>86.500000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>16.000000</td>\n",
       "      <td>764.500000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             大气温度       气象站气压        相对湿度     类别\n",
       "count  167.000000  167.000000  167.000000  167.0\n",
       "mean     4.598802  755.897006   61.419162    2.0\n",
       "std      4.174016    3.727405   24.798059    0.0\n",
       "min     -3.000000  749.300000   13.000000    2.0\n",
       "25%      2.000000  752.750000   42.000000    2.0\n",
       "50%      4.000000  755.500000   61.000000    2.0\n",
       "75%      6.500000  759.600000   86.500000    2.0\n",
       "max     16.000000  764.500000  100.000000    2.0"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "condition = df['类别'] == 2\n",
    "df[condition].describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e3b0a27d",
   "metadata": {},
   "source": [
    "#### 105、请通过pydata03.xlsx，求类别为2的平均相对湿度，其结果为( B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e35e2c1b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "61.41916167664671"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "condition = df['类别'] == 2\n",
    "df[condition]['相对湿度'].mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c24a210a",
   "metadata": {},
   "source": [
    "#### 106、pydata03中索引为200的样本为本年第 (B)天"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "3f2221a5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2023-02-14 06:00:00')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将\"日期\"列转化为日期格式\n",
    "df[\"日期\"] = pd.to_datetime(df[\"日期\"])\n",
    "df['日期'].iloc[200]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "4827efce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timedelta('45 days 06:00:00')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['日期'].iloc[200] - pd.Timestamp(\"2022-12-31\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "407ea17e",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "31+14"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "6fe116a2",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4ff98ebb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>大气温度</th>\n",
       "      <th>气象站气压</th>\n",
       "      <th>相对湿度</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2023-02-22 14:00:00</td>\n",
       "      <td>17.9</td>\n",
       "      <td>765.9</td>\n",
       "      <td>54</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2023-02-22 11:00:00</td>\n",
       "      <td>19.2</td>\n",
       "      <td>768.1</td>\n",
       "      <td>54</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2023-02-22 08:00:00</td>\n",
       "      <td>14.8</td>\n",
       "      <td>767.6</td>\n",
       "      <td>66</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2023-02-22 05:00:00</td>\n",
       "      <td>14.4</td>\n",
       "      <td>766.8</td>\n",
       "      <td>73</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2023-02-22 02:00:00</td>\n",
       "      <td>15.1</td>\n",
       "      <td>767.2</td>\n",
       "      <td>75</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>165</th>\n",
       "      <td>2023-02-01 14:00:00</td>\n",
       "      <td>21.2</td>\n",
       "      <td>760.7</td>\n",
       "      <td>74</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>166</th>\n",
       "      <td>2023-02-01 11:00:00</td>\n",
       "      <td>21.8</td>\n",
       "      <td>762.7</td>\n",
       "      <td>66</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>167</th>\n",
       "      <td>2023-02-01 08:00:00</td>\n",
       "      <td>17.1</td>\n",
       "      <td>761.9</td>\n",
       "      <td>83</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>168</th>\n",
       "      <td>2023-02-01 05:00:00</td>\n",
       "      <td>16.6</td>\n",
       "      <td>760.7</td>\n",
       "      <td>83</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>169</th>\n",
       "      <td>2023-02-01 02:00:00</td>\n",
       "      <td>17.1</td>\n",
       "      <td>760.8</td>\n",
       "      <td>80</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>170 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                     日期  大气温度  气象站气压  相对湿度  类别\n",
       "0   2023-02-22 14:00:00  17.9  765.9    54   1\n",
       "1   2023-02-22 11:00:00  19.2  768.1    54   2\n",
       "2   2023-02-22 08:00:00  14.8  767.6    66   3\n",
       "3   2023-02-22 05:00:00  14.4  766.8    73   1\n",
       "4   2023-02-22 02:00:00  15.1  767.2    75   3\n",
       "..                  ...   ...    ...   ...  ..\n",
       "165 2023-02-01 14:00:00  21.2  760.7    74   2\n",
       "166 2023-02-01 11:00:00  21.8  762.7    66   1\n",
       "167 2023-02-01 08:00:00  17.1  761.9    83   2\n",
       "168 2023-02-01 05:00:00  16.6  760.7    83   2\n",
       "169 2023-02-01 02:00:00  17.1  760.8    80   1\n",
       "\n",
       "[170 rows x 5 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_excel(\"pydata04_1678066099340.xlsx\")\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "e9a708e5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>大气温度</th>\n",
       "      <th>气象站气压</th>\n",
       "      <th>相对湿度</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>170.000000</td>\n",
       "      <td>170.000000</td>\n",
       "      <td>170.000000</td>\n",
       "      <td>170.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>18.280000</td>\n",
       "      <td>763.046471</td>\n",
       "      <td>81.029412</td>\n",
       "      <td>1.935294</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>2.409292</td>\n",
       "      <td>2.617039</td>\n",
       "      <td>14.405960</td>\n",
       "      <td>0.807832</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>12.000000</td>\n",
       "      <td>758.600000</td>\n",
       "      <td>46.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>16.825000</td>\n",
       "      <td>761.200000</td>\n",
       "      <td>71.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>18.000000</td>\n",
       "      <td>762.500000</td>\n",
       "      <td>84.500000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>19.600000</td>\n",
       "      <td>764.600000</td>\n",
       "      <td>93.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>27.900000</td>\n",
       "      <td>769.800000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             大气温度       气象站气压        相对湿度          类别\n",
       "count  170.000000  170.000000  170.000000  170.000000\n",
       "mean    18.280000  763.046471   81.029412    1.935294\n",
       "std      2.409292    2.617039   14.405960    0.807832\n",
       "min     12.000000  758.600000   46.000000    1.000000\n",
       "25%     16.825000  761.200000   71.000000    1.000000\n",
       "50%     18.000000  762.500000   84.500000    2.000000\n",
       "75%     19.600000  764.600000   93.000000    3.000000\n",
       "max     27.900000  769.800000  100.000000    3.000000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e37d7af0",
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_csv?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "9d56e566",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on method to_csv in module pandas.core.generic:\n",
      "\n",
      "to_csv(path_or_buf: 'FilePath | WriteBuffer[bytes] | WriteBuffer[str] | None' = None, sep: 'str' = ',', na_rep: 'str' = '', float_format: 'str | None' = None, columns: 'Sequence[Hashable] | None' = None, header: 'bool_t | list[str]' = True, index: 'bool_t' = True, index_label: 'IndexLabel | None' = None, mode: 'str' = 'w', encoding: 'str | None' = None, compression: 'CompressionOptions' = 'infer', quoting: 'int | None' = None, quotechar: 'str' = '\"', line_terminator: 'str | None' = None, chunksize: 'int | None' = None, date_format: 'str | None' = None, doublequote: 'bool_t' = True, escapechar: 'str | None' = None, decimal: 'str' = '.', errors: 'str' = 'strict', storage_options: 'StorageOptions' = None) -> 'str | None' method of pandas.core.frame.DataFrame instance\n",
      "    Write object to a comma-separated values (csv) file.\n",
      "    \n",
      "    Parameters\n",
      "    ----------\n",
      "    path_or_buf : str, path object, file-like object, or None, default None\n",
      "        String, path object (implementing os.PathLike[str]), or file-like\n",
      "        object implementing a write() function. If None, the result is\n",
      "        returned as a string. If a non-binary file object is passed, it should\n",
      "        be opened with `newline=''`, disabling universal newlines. If a binary\n",
      "        file object is passed, `mode` might need to contain a `'b'`.\n",
      "    \n",
      "        .. versionchanged:: 1.2.0\n",
      "    \n",
      "           Support for binary file objects was introduced.\n",
      "    \n",
      "    sep : str, default ','\n",
      "        String of length 1. Field delimiter for the output file.\n",
      "    na_rep : str, default ''\n",
      "        Missing data representation.\n",
      "    float_format : str, default None\n",
      "        Format string for floating point numbers.\n",
      "    columns : sequence, optional\n",
      "        Columns to write.\n",
      "    header : bool or list of str, default True\n",
      "        Write out the column names. If a list of strings is given it is\n",
      "        assumed to be aliases for the column names.\n",
      "    index : bool, default True\n",
      "        Write row names (index).\n",
      "    index_label : str or sequence, or False, default None\n",
      "        Column label for index column(s) if desired. If None is given, and\n",
      "        `header` and `index` are True, then the index names are used. A\n",
      "        sequence should be given if the object uses MultiIndex. If\n",
      "        False do not print fields for index names. Use index_label=False\n",
      "        for easier importing in R.\n",
      "    mode : str\n",
      "        Python write mode, default 'w'.\n",
      "    encoding : str, optional\n",
      "        A string representing the encoding to use in the output file,\n",
      "        defaults to 'utf-8'. `encoding` is not supported if `path_or_buf`\n",
      "        is a non-binary file object.\n",
      "    compression : str or dict, default 'infer'\n",
      "        For on-the-fly compression of the output data. If 'infer' and '%s'\n",
      "        path-like, then detect compression from the following extensions: '.gz',\n",
      "        '.bz2', '.zip', '.xz', or '.zst' (otherwise no compression). Set to\n",
      "        ``None`` for no compression. Can also be a dict with key ``'method'`` set\n",
      "        to one of {``'zip'``, ``'gzip'``, ``'bz2'``, ``'zstd'``} and other\n",
      "        key-value pairs are forwarded to ``zipfile.ZipFile``, ``gzip.GzipFile``,\n",
      "        ``bz2.BZ2File``, or ``zstandard.ZstdDecompressor``, respectively. As an\n",
      "        example, the following could be passed for faster compression and to create\n",
      "        a reproducible gzip archive:\n",
      "        ``compression={'method': 'gzip', 'compresslevel': 1, 'mtime': 1}``.\n",
      "    \n",
      "        .. versionchanged:: 1.0.0\n",
      "    \n",
      "           May now be a dict with key 'method' as compression mode\n",
      "           and other entries as additional compression options if\n",
      "           compression mode is 'zip'.\n",
      "    \n",
      "        .. versionchanged:: 1.1.0\n",
      "    \n",
      "           Passing compression options as keys in dict is\n",
      "           supported for compression modes 'gzip', 'bz2', 'zstd', and 'zip'.\n",
      "    \n",
      "        .. versionchanged:: 1.2.0\n",
      "    \n",
      "            Compression is supported for binary file objects.\n",
      "    \n",
      "        .. versionchanged:: 1.2.0\n",
      "    \n",
      "            Previous versions forwarded dict entries for 'gzip' to\n",
      "            `gzip.open` instead of `gzip.GzipFile` which prevented\n",
      "            setting `mtime`.\n",
      "    \n",
      "    quoting : optional constant from csv module\n",
      "        Defaults to csv.QUOTE_MINIMAL. If you have set a `float_format`\n",
      "        then floats are converted to strings and thus csv.QUOTE_NONNUMERIC\n",
      "        will treat them as non-numeric.\n",
      "    quotechar : str, default '\\\"'\n",
      "        String of length 1. Character used to quote fields.\n",
      "    line_terminator : str, optional\n",
      "        The newline character or character sequence to use in the output\n",
      "        file. Defaults to `os.linesep`, which depends on the OS in which\n",
      "        this method is called ('\\\\n' for linux, '\\\\r\\\\n' for Windows, i.e.).\n",
      "    chunksize : int or None\n",
      "        Rows to write at a time.\n",
      "    date_format : str, default None\n",
      "        Format string for datetime objects.\n",
      "    doublequote : bool, default True\n",
      "        Control quoting of `quotechar` inside a field.\n",
      "    escapechar : str, default None\n",
      "        String of length 1. Character used to escape `sep` and `quotechar`\n",
      "        when appropriate.\n",
      "    decimal : str, default '.'\n",
      "        Character recognized as decimal separator. E.g. use ',' for\n",
      "        European data.\n",
      "    errors : str, default 'strict'\n",
      "        Specifies how encoding and decoding errors are to be handled.\n",
      "        See the errors argument for :func:`open` for a full list\n",
      "        of options.\n",
      "    \n",
      "        .. versionadded:: 1.1.0\n",
      "    \n",
      "    storage_options : dict, optional\n",
      "        Extra options that make sense for a particular storage connection, e.g.\n",
      "        host, port, username, password, etc. For HTTP(S) URLs the key-value pairs\n",
      "        are forwarded to ``urllib`` as header options. For other URLs (e.g.\n",
      "        starting with \"s3://\", and \"gcs://\") the key-value pairs are forwarded to\n",
      "        ``fsspec``. Please see ``fsspec`` and ``urllib`` for more details.\n",
      "    \n",
      "        .. versionadded:: 1.2.0\n",
      "    \n",
      "    Returns\n",
      "    -------\n",
      "    None or str\n",
      "        If path_or_buf is None, returns the resulting csv format as a\n",
      "        string. Otherwise returns None.\n",
      "    \n",
      "    See Also\n",
      "    --------\n",
      "    read_csv : Load a CSV file into a DataFrame.\n",
      "    to_excel : Write DataFrame to an Excel file.\n",
      "    \n",
      "    Examples\n",
      "    --------\n",
      "    >>> df = pd.DataFrame({'name': ['Raphael', 'Donatello'],\n",
      "    ...                    'mask': ['red', 'purple'],\n",
      "    ...                    'weapon': ['sai', 'bo staff']})\n",
      "    >>> df.to_csv(index=False)\n",
      "    'name,mask,weapon\\nRaphael,red,sai\\nDonatello,purple,bo staff\\n'\n",
      "    \n",
      "    Create 'out.zip' containing 'out.csv'\n",
      "    \n",
      "    >>> compression_opts = dict(method='zip',\n",
      "    ...                         archive_name='out.csv')  # doctest: +SKIP\n",
      "    >>> df.to_csv('out.zip', index=False,\n",
      "    ...           compression=compression_opts)  # doctest: +SKIP\n",
      "    \n",
      "    To write a csv file to a new folder or nested folder you will first\n",
      "    need to create it using either Pathlib or os:\n",
      "    \n",
      "    >>> from pathlib import Path  # doctest: +SKIP\n",
      "    >>> filepath = Path('folder/subfolder/out.csv')  # doctest: +SKIP\n",
      "    >>> filepath.parent.mkdir(parents=True, exist_ok=True)  # doctest: +SKIP\n",
      "    >>> df.to_csv(filepath)  # doctest: +SKIP\n",
      "    \n",
      "    >>> import os  # doctest: +SKIP\n",
      "    >>> os.makedirs('folder/subfolder', exist_ok=True)  # doctest: +SKIP\n",
      "    >>> df.to_csv('folder/subfolder/out.csv')  # doctest: +SKIP\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(df.to_csv)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "593b4961",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(170, 5)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "09734a58",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>大气温度</th>\n",
       "      <th>气象站气压</th>\n",
       "      <th>相对湿度</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>59.000000</td>\n",
       "      <td>59.000000</td>\n",
       "      <td>59.000000</td>\n",
       "      <td>59.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>18.435593</td>\n",
       "      <td>762.601695</td>\n",
       "      <td>83.474576</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>2.230646</td>\n",
       "      <td>2.473131</td>\n",
       "      <td>13.566383</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>12.000000</td>\n",
       "      <td>758.900000</td>\n",
       "      <td>52.000000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>17.250000</td>\n",
       "      <td>760.700000</td>\n",
       "      <td>74.000000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>18.100000</td>\n",
       "      <td>762.000000</td>\n",
       "      <td>86.000000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>19.450000</td>\n",
       "      <td>763.550000</td>\n",
       "      <td>95.000000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>26.000000</td>\n",
       "      <td>769.500000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            大气温度       气象站气压        相对湿度    类别\n",
       "count  59.000000   59.000000   59.000000  59.0\n",
       "mean   18.435593  762.601695   83.474576   2.0\n",
       "std     2.230646    2.473131   13.566383   0.0\n",
       "min    12.000000  758.900000   52.000000   2.0\n",
       "25%    17.250000  760.700000   74.000000   2.0\n",
       "50%    18.100000  762.000000   86.000000   2.0\n",
       "75%    19.450000  763.550000   95.000000   2.0\n",
       "max    26.000000  769.500000  100.000000   2.0"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df['类别'] == 2].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "8bb71449",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>收盘</th>\n",
       "      <th>开盘</th>\n",
       "      <th>高</th>\n",
       "      <th>低</th>\n",
       "      <th>交易量</th>\n",
       "      <th>涨跌幅</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>44446</td>\n",
       "      <td>91.14</td>\n",
       "      <td>90.80</td>\n",
       "      <td>93.47</td>\n",
       "      <td>90.43</td>\n",
       "      <td>6.80M</td>\n",
       "      <td>0.0604</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>44442</td>\n",
       "      <td>85.95</td>\n",
       "      <td>84.93</td>\n",
       "      <td>87.26</td>\n",
       "      <td>84.55</td>\n",
       "      <td>3.03M</td>\n",
       "      <td>0.0265</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>44441</td>\n",
       "      <td>83.73</td>\n",
       "      <td>85.47</td>\n",
       "      <td>86.48</td>\n",
       "      <td>82.46</td>\n",
       "      <td>4.26M</td>\n",
       "      <td>-0.0098</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>44440</td>\n",
       "      <td>84.56</td>\n",
       "      <td>82.52</td>\n",
       "      <td>87.49</td>\n",
       "      <td>81.75</td>\n",
       "      <td>9.11M</td>\n",
       "      <td>0.0540</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>44439</td>\n",
       "      <td>80.23</td>\n",
       "      <td>76.27</td>\n",
       "      <td>80.24</td>\n",
       "      <td>75.11</td>\n",
       "      <td>7.37M</td>\n",
       "      <td>0.0823</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>862</th>\n",
       "      <td>43195</td>\n",
       "      <td>10.98</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.05</td>\n",
       "      <td>10.75</td>\n",
       "      <td>893.30K</td>\n",
       "      <td>0.0009</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>863</th>\n",
       "      <td>43194</td>\n",
       "      <td>10.97</td>\n",
       "      <td>10.75</td>\n",
       "      <td>11.08</td>\n",
       "      <td>10.55</td>\n",
       "      <td>1.50M</td>\n",
       "      <td>0.0055</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>864</th>\n",
       "      <td>43193</td>\n",
       "      <td>10.91</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.50</td>\n",
       "      <td>10.79</td>\n",
       "      <td>2.51M</td>\n",
       "      <td>-0.0082</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>865</th>\n",
       "      <td>43192</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.05</td>\n",
       "      <td>11.50</td>\n",
       "      <td>10.91</td>\n",
       "      <td>2.77M</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>866</th>\n",
       "      <td>43188</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.80</td>\n",
       "      <td>10.65</td>\n",
       "      <td>5.86M</td>\n",
       "      <td>-0.0214</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>867 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        日期     收盘     开盘      高      低      交易量     涨跌幅  类别\n",
       "0    44446  91.14  90.80  93.47  90.43    6.80M  0.0604   1\n",
       "1    44442  85.95  84.93  87.26  84.55    3.03M  0.0265   2\n",
       "2    44441  83.73  85.47  86.48  82.46    4.26M -0.0098   3\n",
       "3    44440  84.56  82.52  87.49  81.75    9.11M  0.0540   1\n",
       "4    44439  80.23  76.27  80.24  75.11    7.37M  0.0823   3\n",
       "..     ...    ...    ...    ...    ...      ...     ...  ..\n",
       "862  43195  10.98  11.00  11.05  10.75  893.30K  0.0009   1\n",
       "863  43194  10.97  10.75  11.08  10.55    1.50M  0.0055   3\n",
       "864  43193  10.91  11.50  11.50  10.79    2.51M -0.0082   3\n",
       "865  43192  11.00  11.05  11.50  10.91    2.77M  0.0000   1\n",
       "866  43188  11.00  11.50  11.80  10.65    5.86M -0.0214   2\n",
       "\n",
       "[867 rows x 8 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_excel(\"pydata05_1678066125986.xlsx\")\n",
    "df  # 距离1899-12-30的天数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "3d366000",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "156.28"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['开盘'].max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "1751397f",
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.read_excel?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "fdd6402d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>收盘</th>\n",
       "      <th>开盘</th>\n",
       "      <th>高</th>\n",
       "      <th>低</th>\n",
       "      <th>交易量</th>\n",
       "      <th>涨跌幅</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>770</th>\n",
       "      <td>43327</td>\n",
       "      <td>10.27</td>\n",
       "      <td>9.9</td>\n",
       "      <td>10.3</td>\n",
       "      <td>9.09</td>\n",
       "      <td>10.74M</td>\n",
       "      <td>-0.0366</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        日期     收盘   开盘     高     低     交易量     涨跌幅  类别\n",
       "770  43327  10.27  9.9  10.3  9.09  10.74M -0.0366   3"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df['低']<9.86]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "4af919f2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>收盘</th>\n",
       "      <th>开盘</th>\n",
       "      <th>高</th>\n",
       "      <th>低</th>\n",
       "      <th>交易量</th>\n",
       "      <th>涨跌幅</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>770</th>\n",
       "      <td>43327</td>\n",
       "      <td>10.27</td>\n",
       "      <td>9.9</td>\n",
       "      <td>10.3</td>\n",
       "      <td>9.09</td>\n",
       "      <td>10.74M</td>\n",
       "      <td>-0.0366</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        日期     收盘   开盘     高     低     交易量     涨跌幅  类别\n",
       "770  43327  10.27  9.9  10.3  9.09  10.74M -0.0366   3"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "condition = df['低'] < 9.86\n",
    "df[condition]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "b30e37d2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "620.51"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['收盘'].iloc[-50:].sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "b766a47c",
   "metadata": {},
   "outputs": [],
   "source": [
    "condition = df['类别'] == 2\n",
    "test = df[condition]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "7b6d16de",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>收盘</th>\n",
       "      <th>开盘</th>\n",
       "      <th>高</th>\n",
       "      <th>低</th>\n",
       "      <th>交易量</th>\n",
       "      <th>涨跌幅</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>44442</td>\n",
       "      <td>85.95</td>\n",
       "      <td>84.93</td>\n",
       "      <td>87.26</td>\n",
       "      <td>84.55</td>\n",
       "      <td>3.03M</td>\n",
       "      <td>0.0265</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>44428</td>\n",
       "      <td>66.54</td>\n",
       "      <td>65.13</td>\n",
       "      <td>70.49</td>\n",
       "      <td>65.11</td>\n",
       "      <td>7.48M</td>\n",
       "      <td>0.0344</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>44426</td>\n",
       "      <td>68.46</td>\n",
       "      <td>70.35</td>\n",
       "      <td>70.35</td>\n",
       "      <td>66.51</td>\n",
       "      <td>4.17M</td>\n",
       "      <td>0.0100</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>44419</td>\n",
       "      <td>80.37</td>\n",
       "      <td>80.61</td>\n",
       "      <td>81.08</td>\n",
       "      <td>78.22</td>\n",
       "      <td>3.70M</td>\n",
       "      <td>0.0022</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>44418</td>\n",
       "      <td>80.19</td>\n",
       "      <td>84.70</td>\n",
       "      <td>85.01</td>\n",
       "      <td>79.81</td>\n",
       "      <td>6.80M</td>\n",
       "      <td>-0.0221</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>852</th>\n",
       "      <td>43209</td>\n",
       "      <td>11.35</td>\n",
       "      <td>11.40</td>\n",
       "      <td>11.49</td>\n",
       "      <td>11.28</td>\n",
       "      <td>433.05K</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>854</th>\n",
       "      <td>43207</td>\n",
       "      <td>11.32</td>\n",
       "      <td>11.35</td>\n",
       "      <td>11.40</td>\n",
       "      <td>11.16</td>\n",
       "      <td>635.05K</td>\n",
       "      <td>-0.0009</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>856</th>\n",
       "      <td>43203</td>\n",
       "      <td>11.40</td>\n",
       "      <td>11.60</td>\n",
       "      <td>11.69</td>\n",
       "      <td>11.32</td>\n",
       "      <td>803.95K</td>\n",
       "      <td>-0.0189</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>857</th>\n",
       "      <td>43202</td>\n",
       "      <td>11.62</td>\n",
       "      <td>11.53</td>\n",
       "      <td>11.76</td>\n",
       "      <td>11.35</td>\n",
       "      <td>2.08M</td>\n",
       "      <td>0.0122</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>866</th>\n",
       "      <td>43188</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.80</td>\n",
       "      <td>10.65</td>\n",
       "      <td>5.86M</td>\n",
       "      <td>-0.0214</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>288 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        日期     收盘     开盘      高      低      交易量     涨跌幅  类别\n",
       "1    44442  85.95  84.93  87.26  84.55    3.03M  0.0265   2\n",
       "11   44428  66.54  65.13  70.49  65.11    7.48M  0.0344   2\n",
       "13   44426  68.46  70.35  70.35  66.51    4.17M  0.0100   2\n",
       "18   44419  80.37  80.61  81.08  78.22    3.70M  0.0022   2\n",
       "19   44418  80.19  84.70  85.01  79.81    6.80M -0.0221   2\n",
       "..     ...    ...    ...    ...    ...      ...     ...  ..\n",
       "852  43209  11.35  11.40  11.49  11.28  433.05K  0.0000   2\n",
       "854  43207  11.32  11.35  11.40  11.16  635.05K -0.0009   2\n",
       "856  43203  11.40  11.60  11.69  11.32  803.95K -0.0189   2\n",
       "857  43202  11.62  11.53  11.76  11.35    2.08M  0.0122   2\n",
       "866  43188  11.00  11.50  11.80  10.65    5.86M -0.0214   2\n",
       "\n",
       "[288 rows x 8 columns]"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "33053b38",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "288"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test['高'].count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "468b2222",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>收盘</th>\n",
       "      <th>开盘</th>\n",
       "      <th>高</th>\n",
       "      <th>低</th>\n",
       "      <th>交易量</th>\n",
       "      <th>涨跌幅</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>44446</td>\n",
       "      <td>91.14</td>\n",
       "      <td>90.80</td>\n",
       "      <td>93.47</td>\n",
       "      <td>90.43</td>\n",
       "      <td>6.80M</td>\n",
       "      <td>0.0604</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>44442</td>\n",
       "      <td>85.95</td>\n",
       "      <td>84.93</td>\n",
       "      <td>87.26</td>\n",
       "      <td>84.55</td>\n",
       "      <td>3.03M</td>\n",
       "      <td>0.0265</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>44441</td>\n",
       "      <td>83.73</td>\n",
       "      <td>85.47</td>\n",
       "      <td>86.48</td>\n",
       "      <td>82.46</td>\n",
       "      <td>4.26M</td>\n",
       "      <td>-0.0098</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>44440</td>\n",
       "      <td>84.56</td>\n",
       "      <td>82.52</td>\n",
       "      <td>87.49</td>\n",
       "      <td>81.75</td>\n",
       "      <td>9.11M</td>\n",
       "      <td>0.0540</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>44439</td>\n",
       "      <td>80.23</td>\n",
       "      <td>76.27</td>\n",
       "      <td>80.24</td>\n",
       "      <td>75.11</td>\n",
       "      <td>7.37M</td>\n",
       "      <td>0.0823</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>862</th>\n",
       "      <td>43195</td>\n",
       "      <td>10.98</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.05</td>\n",
       "      <td>10.75</td>\n",
       "      <td>893.30K</td>\n",
       "      <td>0.0009</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>863</th>\n",
       "      <td>43194</td>\n",
       "      <td>10.97</td>\n",
       "      <td>10.75</td>\n",
       "      <td>11.08</td>\n",
       "      <td>10.55</td>\n",
       "      <td>1.50M</td>\n",
       "      <td>0.0055</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>864</th>\n",
       "      <td>43193</td>\n",
       "      <td>10.91</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.50</td>\n",
       "      <td>10.79</td>\n",
       "      <td>2.51M</td>\n",
       "      <td>-0.0082</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>865</th>\n",
       "      <td>43192</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.05</td>\n",
       "      <td>11.50</td>\n",
       "      <td>10.91</td>\n",
       "      <td>2.77M</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>866</th>\n",
       "      <td>43188</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.80</td>\n",
       "      <td>10.65</td>\n",
       "      <td>5.86M</td>\n",
       "      <td>-0.0214</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>867 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        日期     收盘     开盘      高      低      交易量     涨跌幅  类别\n",
       "0    44446  91.14  90.80  93.47  90.43    6.80M  0.0604   1\n",
       "1    44442  85.95  84.93  87.26  84.55    3.03M  0.0265   2\n",
       "2    44441  83.73  85.47  86.48  82.46    4.26M -0.0098   3\n",
       "3    44440  84.56  82.52  87.49  81.75    9.11M  0.0540   1\n",
       "4    44439  80.23  76.27  80.24  75.11    7.37M  0.0823   3\n",
       "..     ...    ...    ...    ...    ...      ...     ...  ..\n",
       "862  43195  10.98  11.00  11.05  10.75  893.30K  0.0009   1\n",
       "863  43194  10.97  10.75  11.08  10.55    1.50M  0.0055   3\n",
       "864  43193  10.91  11.50  11.50  10.79    2.51M -0.0082   3\n",
       "865  43192  11.00  11.05  11.50  10.91    2.77M  0.0000   1\n",
       "866  43188  11.00  11.50  11.80  10.65    5.86M -0.0214   2\n",
       "\n",
       "[867 rows x 8 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "eb97cd4c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def func(x):\n",
    "    delta = str(x) + 'D'\n",
    "    delta = pd.Timedelta(delta)\n",
    "    ture_date = delta + pd.Timestamp('1899-12-30')\n",
    "    return ture_date\n",
    "df['日期'] = df['日期'].apply(func)\n",
    "# df['日期'] = df['日期'].apply(lambda x: pd.Timedelta(str(x)+'D') + pd.Timestamp(\"1899-12-30\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "fe53aa75",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>收盘</th>\n",
       "      <th>开盘</th>\n",
       "      <th>高</th>\n",
       "      <th>低</th>\n",
       "      <th>交易量</th>\n",
       "      <th>涨跌幅</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2021-09-07</td>\n",
       "      <td>91.14</td>\n",
       "      <td>90.80</td>\n",
       "      <td>93.47</td>\n",
       "      <td>90.43</td>\n",
       "      <td>6.80M</td>\n",
       "      <td>0.0604</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2021-09-03</td>\n",
       "      <td>85.95</td>\n",
       "      <td>84.93</td>\n",
       "      <td>87.26</td>\n",
       "      <td>84.55</td>\n",
       "      <td>3.03M</td>\n",
       "      <td>0.0265</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2021-09-02</td>\n",
       "      <td>83.73</td>\n",
       "      <td>85.47</td>\n",
       "      <td>86.48</td>\n",
       "      <td>82.46</td>\n",
       "      <td>4.26M</td>\n",
       "      <td>-0.0098</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2021-09-01</td>\n",
       "      <td>84.56</td>\n",
       "      <td>82.52</td>\n",
       "      <td>87.49</td>\n",
       "      <td>81.75</td>\n",
       "      <td>9.11M</td>\n",
       "      <td>0.0540</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2021-08-31</td>\n",
       "      <td>80.23</td>\n",
       "      <td>76.27</td>\n",
       "      <td>80.24</td>\n",
       "      <td>75.11</td>\n",
       "      <td>7.37M</td>\n",
       "      <td>0.0823</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>862</th>\n",
       "      <td>2018-04-05</td>\n",
       "      <td>10.98</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.05</td>\n",
       "      <td>10.75</td>\n",
       "      <td>893.30K</td>\n",
       "      <td>0.0009</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>863</th>\n",
       "      <td>2018-04-04</td>\n",
       "      <td>10.97</td>\n",
       "      <td>10.75</td>\n",
       "      <td>11.08</td>\n",
       "      <td>10.55</td>\n",
       "      <td>1.50M</td>\n",
       "      <td>0.0055</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>864</th>\n",
       "      <td>2018-04-03</td>\n",
       "      <td>10.91</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.50</td>\n",
       "      <td>10.79</td>\n",
       "      <td>2.51M</td>\n",
       "      <td>-0.0082</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>865</th>\n",
       "      <td>2018-04-02</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.05</td>\n",
       "      <td>11.50</td>\n",
       "      <td>10.91</td>\n",
       "      <td>2.77M</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>866</th>\n",
       "      <td>2018-03-29</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.80</td>\n",
       "      <td>10.65</td>\n",
       "      <td>5.86M</td>\n",
       "      <td>-0.0214</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>867 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            日期     收盘     开盘      高      低      交易量     涨跌幅  类别\n",
       "0   2021-09-07  91.14  90.80  93.47  90.43    6.80M  0.0604   1\n",
       "1   2021-09-03  85.95  84.93  87.26  84.55    3.03M  0.0265   2\n",
       "2   2021-09-02  83.73  85.47  86.48  82.46    4.26M -0.0098   3\n",
       "3   2021-09-01  84.56  82.52  87.49  81.75    9.11M  0.0540   1\n",
       "4   2021-08-31  80.23  76.27  80.24  75.11    7.37M  0.0823   3\n",
       "..         ...    ...    ...    ...    ...      ...     ...  ..\n",
       "862 2018-04-05  10.98  11.00  11.05  10.75  893.30K  0.0009   1\n",
       "863 2018-04-04  10.97  10.75  11.08  10.55    1.50M  0.0055   3\n",
       "864 2018-04-03  10.91  11.50  11.50  10.79    2.51M -0.0082   3\n",
       "865 2018-04-02  11.00  11.05  11.50  10.91    2.77M  0.0000   1\n",
       "866 2018-03-29  11.00  11.50  11.80  10.65    5.86M -0.0214   2\n",
       "\n",
       "[867 rows x 8 columns]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "b83a55fb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>收盘</th>\n",
       "      <th>开盘</th>\n",
       "      <th>高</th>\n",
       "      <th>低</th>\n",
       "      <th>交易量</th>\n",
       "      <th>涨跌幅</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2021-09-07</td>\n",
       "      <td>91.14</td>\n",
       "      <td>90.80</td>\n",
       "      <td>93.47</td>\n",
       "      <td>90.43</td>\n",
       "      <td>6.80M</td>\n",
       "      <td>0.0604</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2021-09-03</td>\n",
       "      <td>85.95</td>\n",
       "      <td>84.93</td>\n",
       "      <td>87.26</td>\n",
       "      <td>84.55</td>\n",
       "      <td>3.03M</td>\n",
       "      <td>0.0265</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2021-09-02</td>\n",
       "      <td>83.73</td>\n",
       "      <td>85.47</td>\n",
       "      <td>86.48</td>\n",
       "      <td>82.46</td>\n",
       "      <td>4.26M</td>\n",
       "      <td>-0.0098</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2021-09-01</td>\n",
       "      <td>84.56</td>\n",
       "      <td>82.52</td>\n",
       "      <td>87.49</td>\n",
       "      <td>81.75</td>\n",
       "      <td>9.11M</td>\n",
       "      <td>0.0540</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2021-08-31</td>\n",
       "      <td>80.23</td>\n",
       "      <td>76.27</td>\n",
       "      <td>80.24</td>\n",
       "      <td>75.11</td>\n",
       "      <td>7.37M</td>\n",
       "      <td>0.0823</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>862</th>\n",
       "      <td>2018-04-05</td>\n",
       "      <td>10.98</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.05</td>\n",
       "      <td>10.75</td>\n",
       "      <td>893.30K</td>\n",
       "      <td>0.0009</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>863</th>\n",
       "      <td>2018-04-04</td>\n",
       "      <td>10.97</td>\n",
       "      <td>10.75</td>\n",
       "      <td>11.08</td>\n",
       "      <td>10.55</td>\n",
       "      <td>1.50M</td>\n",
       "      <td>0.0055</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>864</th>\n",
       "      <td>2018-04-03</td>\n",
       "      <td>10.91</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.50</td>\n",
       "      <td>10.79</td>\n",
       "      <td>2.51M</td>\n",
       "      <td>-0.0082</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>865</th>\n",
       "      <td>2018-04-02</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.05</td>\n",
       "      <td>11.50</td>\n",
       "      <td>10.91</td>\n",
       "      <td>2.77M</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>866</th>\n",
       "      <td>2018-03-29</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.80</td>\n",
       "      <td>10.65</td>\n",
       "      <td>5.86M</td>\n",
       "      <td>-0.0214</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>867 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            日期     收盘     开盘      高      低      交易量     涨跌幅  类别\n",
       "0   2021-09-07  91.14  90.80  93.47  90.43    6.80M  0.0604   1\n",
       "1   2021-09-03  85.95  84.93  87.26  84.55    3.03M  0.0265   2\n",
       "2   2021-09-02  83.73  85.47  86.48  82.46    4.26M -0.0098   3\n",
       "3   2021-09-01  84.56  82.52  87.49  81.75    9.11M  0.0540   1\n",
       "4   2021-08-31  80.23  76.27  80.24  75.11    7.37M  0.0823   3\n",
       "..         ...    ...    ...    ...    ...      ...     ...  ..\n",
       "862 2018-04-05  10.98  11.00  11.05  10.75  893.30K  0.0009   1\n",
       "863 2018-04-04  10.97  10.75  11.08  10.55    1.50M  0.0055   3\n",
       "864 2018-04-03  10.91  11.50  11.50  10.79    2.51M -0.0082   3\n",
       "865 2018-04-02  11.00  11.05  11.50  10.91    2.77M  0.0000   1\n",
       "866 2018-03-29  11.00  11.50  11.80  10.65    5.86M -0.0214   2\n",
       "\n",
       "[867 rows x 8 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "27fe1e2f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>收盘</th>\n",
       "      <th>开盘</th>\n",
       "      <th>高</th>\n",
       "      <th>低</th>\n",
       "      <th>交易量</th>\n",
       "      <th>涨跌幅</th>\n",
       "      <th>类别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>866</th>\n",
       "      <td>2018-03-29</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.80</td>\n",
       "      <td>10.65</td>\n",
       "      <td>5.86M</td>\n",
       "      <td>-0.0214</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>865</th>\n",
       "      <td>2018-04-02</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.05</td>\n",
       "      <td>11.50</td>\n",
       "      <td>10.91</td>\n",
       "      <td>2.77M</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>864</th>\n",
       "      <td>2018-04-03</td>\n",
       "      <td>10.91</td>\n",
       "      <td>11.50</td>\n",
       "      <td>11.50</td>\n",
       "      <td>10.79</td>\n",
       "      <td>2.51M</td>\n",
       "      <td>-0.0082</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>863</th>\n",
       "      <td>2018-04-04</td>\n",
       "      <td>10.97</td>\n",
       "      <td>10.75</td>\n",
       "      <td>11.08</td>\n",
       "      <td>10.55</td>\n",
       "      <td>1.50M</td>\n",
       "      <td>0.0055</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>862</th>\n",
       "      <td>2018-04-05</td>\n",
       "      <td>10.98</td>\n",
       "      <td>11.00</td>\n",
       "      <td>11.05</td>\n",
       "      <td>10.75</td>\n",
       "      <td>893.30K</td>\n",
       "      <td>0.0009</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2021-08-31</td>\n",
       "      <td>80.23</td>\n",
       "      <td>76.27</td>\n",
       "      <td>80.24</td>\n",
       "      <td>75.11</td>\n",
       "      <td>7.37M</td>\n",
       "      <td>0.0823</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2021-09-01</td>\n",
       "      <td>84.56</td>\n",
       "      <td>82.52</td>\n",
       "      <td>87.49</td>\n",
       "      <td>81.75</td>\n",
       "      <td>9.11M</td>\n",
       "      <td>0.0540</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2021-09-02</td>\n",
       "      <td>83.73</td>\n",
       "      <td>85.47</td>\n",
       "      <td>86.48</td>\n",
       "      <td>82.46</td>\n",
       "      <td>4.26M</td>\n",
       "      <td>-0.0098</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2021-09-03</td>\n",
       "      <td>85.95</td>\n",
       "      <td>84.93</td>\n",
       "      <td>87.26</td>\n",
       "      <td>84.55</td>\n",
       "      <td>3.03M</td>\n",
       "      <td>0.0265</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2021-09-07</td>\n",
       "      <td>91.14</td>\n",
       "      <td>90.80</td>\n",
       "      <td>93.47</td>\n",
       "      <td>90.43</td>\n",
       "      <td>6.80M</td>\n",
       "      <td>0.0604</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>867 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            日期     收盘     开盘      高      低      交易量     涨跌幅  类别\n",
       "866 2018-03-29  11.00  11.50  11.80  10.65    5.86M -0.0214   2\n",
       "865 2018-04-02  11.00  11.05  11.50  10.91    2.77M  0.0000   1\n",
       "864 2018-04-03  10.91  11.50  11.50  10.79    2.51M -0.0082   3\n",
       "863 2018-04-04  10.97  10.75  11.08  10.55    1.50M  0.0055   3\n",
       "862 2018-04-05  10.98  11.00  11.05  10.75  893.30K  0.0009   1\n",
       "..         ...    ...    ...    ...    ...      ...     ...  ..\n",
       "4   2021-08-31  80.23  76.27  80.24  75.11    7.37M  0.0823   3\n",
       "3   2021-09-01  84.56  82.52  87.49  81.75    9.11M  0.0540   1\n",
       "2   2021-09-02  83.73  85.47  86.48  82.46    4.26M -0.0098   3\n",
       "1   2021-09-03  85.95  84.93  87.26  84.55    3.03M  0.0265   2\n",
       "0   2021-09-07  91.14  90.80  93.47  90.43    6.80M  0.0604   1\n",
       "\n",
       "[867 rows x 8 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = df.sort_values(\"日期\", ascending=True)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "832d7bac",
   "metadata": {},
   "outputs": [],
   "source": [
    "import statsmodels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "13f8be2a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'0.13.2'"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "statsmodels.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "21fcc489",
   "metadata": {},
   "outputs": [],
   "source": [
    "from statsmodels.tsa.arima.model import ARIMA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "0af35ba9",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = df['收盘'].to_numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "ddba624d",
   "metadata": {},
   "outputs": [],
   "source": [
    "model = ARIMA(data, order=(1, 0, 1))  # order= (p,d,q) \n",
    "result_model = model.fit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "e591171a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "e21a250b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1e512444220>"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "x = df['日期'].to_numpy()\n",
    "y1 = df['收盘'].to_numpy()\n",
    "ax.plot(x, y1, color='blue', label=\"True\")\n",
    "y2 = result_model.fittedvalues\n",
    "ax.plot(x, y2, color='red', linestyle='--', label='model')\n",
    "ax.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "ebcc7a87",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1e5115c83d0>"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df = pd.read_excel(\"pydata05_1678066125986.xlsx\")\n",
    "def func(x):\n",
    "    delta = str(x) + 'D'\n",
    "    delta = pd.Timedelta(delta)\n",
    "    ture_date = delta + pd.Timestamp('1899-12-30')\n",
    "    return ture_date\n",
    "df['日期'] = df['日期'].apply(func)\n",
    "\n",
    "# df = df.sort_values(\"日期\", ascending=True)\n",
    "\n",
    "\n",
    "data = df['收盘'].to_numpy()\n",
    "model = ARIMA(data, order=(1, 0, 1))  # order= (p,d,q) \n",
    "result_model = model.fit()\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "x = df['日期'].to_numpy()\n",
    "y1 = df['收盘'].to_numpy()\n",
    "ax.plot(x, y1, color='blue', label=\"True\")\n",
    "y2 = result_model.fittedvalues\n",
    "ax.plot(x, y2, color='red', linestyle='--', label='model')\n",
    "ax.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0c5d6813",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
